package main.sort;

public class SelectionSort extends BaseSort {
    public SelectionSort(int[] array) {
        super(array);
        this.name = "选择排序";
    }

    /**
     * 第一次遍历n-1个数，找到最小的数值与第一个元素交换；
     * 第二次遍历n-2个数，找到最小的数值与第二个元素交换；
     * <br>
     * [1, 7, 6, 5, 4, 3, 2, 8]<br>
     * [1, 2, 6, 5, 4, 3, 7, 8]<br>
     * [1, 2, 3, 5, 4, 6, 7, 8]<br>
     * [1, 2, 3, 4, 5, 6, 7, 8]<br>
     * [1, 2, 3, 4, 5, 6, 7, 8]<br>
     * [1, 2, 3, 4, 5, 6, 7, 8]<br>
     * [1, 2, 3, 4, 5, 6, 7, 8]
     */
    @Override
    public void sort() {
        for (int i = 0; i < array.length - 1; i++) {
            int min = i;
            for (int j = i + 1; j < array.length; j++) {
                if (array[min] > array[j]) {
                    min = j;
                }
            }
            if (min != i) {
                swap(array, min, i);
            }
            print();
        }
    }
}
